using SmartLink.Domain.Entity;
using SmartLink.Domain.ExpandEntity;
using SmartLink.Domain.ExpandEntity.Base;
using SmartLink.DTOS;
using SmartLink.EnumLibrary;
using System.Collections.Generic;

namespace SmartLink.Domain.IServices
{
    public interface ISYS_UserServices
    {
        bool Add(SYS_User user, BIZ_UserToOrganization userToOrg);
        bool ExistAcountName(string accontName);
        bool ExistUserEmail(string userEmail);
        int GetUserIDByAccountName(string accountName);
        OperationResult CheckLogin(string userName, string passWord);
        void Delete(int userId);
        SYS_User GetById(int id);
        CurrentUserInfo GetCurrentUserInfo(int userId);
        IList<dynamic> GetUserList(string odidStr);
        IEnumerable<dynamic> GetPaged(int? oid, int? odid, UserStatusEnum? userStatus, string keyWord, int curUserId, Pagination pagination);
        dynamic GetUserInfo(int id);
        bool Update(SYS_User user);
        void Update(SYS_User user, int oid, int? newDeptId);
        bool UpdateUserInfo(SYS_User user, BIZ_UserToOrganization userToOrg, PER_UserToRole userToRole);
        OperationResult UpdatePassword(int userId, string password, bool kickOut = false, PlatformEnum? platform = null);
        OperationResult ForceUpdatePassword(string password);
        OperationResult ResetPassword(int userId);
        IEnumerable<UserSelectItemExpand> GetUserSelectList(int orgId, bool isDept);
    }
}